package Lee_code;

/**
 * @author blh
 * @date 2024年08月06日 16:20
 */
public class Lee_12_86 {
    public String intToRoman(int num) {
        // 1 <= num <= 3999
        // 先处理千分位
        StringBuilder sb = new StringBuilder();
        if (num / 1000 != 0) {
            int thousand = num / 1000;
            for (int i = 0; i < thousand; i++) {
                sb.append("M");
            }
            num = num % 1000;
        }
        // 处理百分位
        if (num / 100 != 0) {
            int hundred = num / 100;
            if (hundred == 4) {
                sb.append("CD");
            } else if (hundred == 9) {
                sb.append("CM");
            } else {
                if (hundred >= 5) {
                    sb.append("D");
                    for (int i = 0; i < hundred - 5; i++) {
                        sb.append("C");
                    }
                } else {
                    for (int i = 0; i < hundred; i++) {
                        sb.append("C");
                    }
                }
            }
            num = num % 100;
        }
        // 处理百分位
        if (num / 10 != 0) {
            int ten = num / 10;
            if (ten == 4) {
                sb.append("XL");
            } else if (ten == 9) {
                sb.append("XC");
            } else {
                if (ten >= 5) {
                    sb.append("L");
                    for (int i = 0; i < ten - 5; i++) {
                        sb.append("X");
                    }
                } else {
                    for (int i = 0; i < ten; i++) {
                        sb.append("X");
                    }
                }
            }
            num = num % 10;
        }
        // 处理百分位
        if (num != 0) {
            int one = num;
            if (one == 4) {
                sb.append("IV");
            } else if (one == 9) {
                sb.append("IX");
            } else {
                if (one >= 5) {
                    sb.append("V");
                    for (int i = 0; i < one - 5; i++) {
                        sb.append("I");
                    }
                } else {
                    for (int i = 0; i < one; i++) {
                        sb.append("I");
                    }
                }
            }
        }

        return sb.toString();
    }
}
